package com.zmn.oms.zmn.business.interfaces.entrust;

import com.zmn.oms.common.dto.ResultDTO;
import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.model.dto.entrust.SyncEntrustOrderStatusDTO;
import com.zmn.oms.model.dto.open.v2.PushDutyTimeDTO;
import com.zmn.oms.model.dto.open.v2.PushMasterInfoDTO;
import com.zmn.oms.model.dto.open.v2.PushOrderCompleteDTO;
import com.zmn.oms.model.dto.open.v2.PushOrderDTO;

/**
 * 类描述：
 *
 * @author lhl
 * @date 2019/12/23 18:33
 */
public interface EntrustOrderNotifyBService {

    /**
     * 推送新单-准备业务需要的数据
     * @param pushOrderDTO
     */
    SyncEntrustOrderStatusDTO preparePushNewOrder(PushOrderDTO pushOrderDTO) throws OmsBaseException;
    /**
     * 推送新单-执行业务操作
     * @param syncEntrustOrderStatusDTO
     */
    ResultDTO doPushNewOrder(SyncEntrustOrderStatusDTO syncEntrustOrderStatusDTO);

    /**
     * 同步预约时间-准备业务需要的数据
     * @param pushDutyTimeDTO
     */
    SyncEntrustOrderStatusDTO prepareSyncDutyTime(PushDutyTimeDTO pushDutyTimeDTO) throws OmsBaseException;
    /**
     * 同步预约时间-执行业务操作
     * @param syncEntrustOrderStatusDTO
     */
    ResultDTO doSyncDutyTime(SyncEntrustOrderStatusDTO syncEntrustOrderStatusDTO);

    /**
     * 同步接单工程师-准备业务需要的数据
     * @param pushMasterInfoDTO
     */
    SyncEntrustOrderStatusDTO prepareSyncMasterInfo(PushMasterInfoDTO pushMasterInfoDTO) throws OmsBaseException;
    /**
     * 同步接单工程师-执行业务操作
     * @param syncEntrustOrderStatusDTO
     */
    ResultDTO doSyncMasterInfo(SyncEntrustOrderStatusDTO syncEntrustOrderStatusDTO);

    /**
     * 同步工程师上门-准备业务需要的数据
     * @param pushOrderDTO
     */
    SyncEntrustOrderStatusDTO prepareSyncMasterVisit(PushOrderDTO pushOrderDTO) throws OmsBaseException;
    /**
     * 同步工程师上门-执行业务操作
     * @param syncEntrustOrderStatusDTO
     */
    ResultDTO doSyncMasterVisit(SyncEntrustOrderStatusDTO syncEntrustOrderStatusDTO);

    /**
     * 同步订单状态为完成-准备业务需要的数据
     * @param pushOrderCompleteDTO
     */
    SyncEntrustOrderStatusDTO prepareSyncOrderComplete(PushOrderCompleteDTO pushOrderCompleteDTO) throws OmsBaseException;
    /**
     * 同步订单状态为完成-执行业务操作
     * @param syncEntrustOrderStatusDTO
     */
    ResultDTO doSyncOrderComplete(SyncEntrustOrderStatusDTO syncEntrustOrderStatusDTO);

    /**
     * 同步订单状态为取消-准备业务需要的数据
     * @param pushOrderDTO
     */
    SyncEntrustOrderStatusDTO prepareSyncOrderCancel(PushOrderDTO pushOrderDTO) throws OmsBaseException;
    /**
     * 同步订单状态为取消-执行业务操作
     * @param syncEntrustOrderStatusDTO
     */
    ResultDTO doSyncOrderCancel(SyncEntrustOrderStatusDTO syncEntrustOrderStatusDTO);
}
